package main;
/**
 * an interface for a class containing a store for labs,scientists and equipment
 * @author matan and nadav
 *
 */
public interface ScienceStore {
	/**
	 * public function for buying equipment from the store, uses browse sell and charge to process the request
	 * @param name - the name of the equipment to buy 
	 * @param amount - the minimal amount required to be in the package 
	 * @param stats - a pointer to the statistics object for charging the budget 
	 * @return the amount in the purchesed equipment pack
	 */
public Integer buyEquipment(String name,int amount,Statistics stats);
/**
 *  public function for buying labs from the store, uses browse sell and charge to process the request
 * @param spec - a string representing the required specialty for the lab
 * @param st - a pointer to the statistics object for charging the budget
 * @return a Lab object
 */
public Lab buyLab(String spec,Statistics stats);
/**
 *  public function for buying scientists from the store, uses browse sell and charge to process the request
 * @param spec - a string representing the required specialty for the lab
 * @param st - a pointer to the statistics object for charging the budget
 * @return a scientist object
 */
public Scientist buyScientist(String spec,Statistics stats);
/*
/**
 * a private function used by buyEquipment and searches for the cheapest pack matching the requirements
 * @param name - the name of the equipment to buy
 * @param amount - the minimal amount required to be in the package
 * @return a pack object containing the amount in the pack, the price and the index in the store container to be deleted
 */
/*
 Pack<Integer> browseEquipment(String name,int amount);
/**
 * a private function used by buyLab and searches for the cheapest pack matching the requirements
 * 
 * @param spec - a string representing the required specialty for the lab
 * @return a pack object containing the Lab object itself and the price to be charged.
 */
/*
Pack<Lab> browseLab(String spec);
/**
 * a private function used by buyScientist and searches for the cheapest pack matching the requirements
 * @param spec - a string representing the required specialty for the scientist
 * @return a pack object containing the Scientist object itself and the price to be charged.
 */
/*
Pack<Scientist> browseScientist(String name);
/**
 * the sell function called by buyEquipment and deletes the sold equipment from the container
 * @param i - if i = 0 do nothing, if i<0 deletes the pack in the i index, if i>0 deletes the packs on indexes starting from 0 up to i
 *
void sellEquipment(int i);
/**
 * the sell function called by buyLab and deletes the sold Lab from the container
 *
void sellLab();
/**
 * the sell function called by buyScientist and deletes the sold scientist from the container
 *
void sellScientist();
/**
 * a function that charges the company budget for the specified amount
 * @param price - the amount to remove from the budget
 * @param stats - a pointer to the statistics object for charging the budget 
 *
void charge(int price,Statistics stats);
*/
}
